package com.dawn.module.hospital.controller.admin.chs.config.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import com.dawn.framework.excel.core.annotations.DictFormat;
import com.dawn.framework.excel.core.convert.DictConvert;

@Schema(description = "管理后台 - 医保支付配置 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ChsConfigRespVO {

    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9177")
    @ExcelProperty("ID")
    private Long id;

    @Schema(description = "appid", requiredMode = Schema.RequiredMode.REQUIRED, example = "8027")
    @ExcelProperty("appid")
    private String appId;

    @Schema(description = "应用名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @ExcelProperty("应用名称")
    private String appName;

    @Schema(description = "应用类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("应用类型")
    private String appType;

    @Schema(description = "定点医药机构应用ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32453")
    @ExcelProperty("定点医药机构应用ID")
    private String orgAppId;

    @Schema(description = "机构渠道认证编码", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("机构渠道认证编码")
    private String orgChnlCrtfCodg;

    @Schema(description = "第三方渠道名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @ExcelProperty("第三方渠道名称")
    private String channelName;

    @Schema(description = "渠道号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("渠道号")
    private String channel;

    @Schema(description = "城市编码", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("城市编码")
    private String cityCode;

    @Schema(description = "定点医药机构编码", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("定点医药机构编码")
    private String orgCodg;

    @Schema(description = "合作方id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17444")
    @ExcelProperty("合作方id")
    private String partnerId;

    @Schema(description = "密钥", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("密钥")
    private String partnerSecret;

    @Schema(description = "渠道授权地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.ynzykj.net")
    @ExcelProperty("渠道授权地址")
    private String channelOauthUrl;

    @Schema(description = "渠道获取用户地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.ynzykj.net")
    @ExcelProperty("渠道获取用户地址")
    private String channelUserUrl;

    @Schema(description = "回调地址", example = "https://www.ynzykj.net")
    @ExcelProperty("回调地址")
    private String redirectUrl;

    @Schema(description = "his分账下单地址", example = "https://www.ynzykj.net")
    @ExcelProperty("his分账下单地址")
    private String hisOrderUrl;

    @Schema(description = "his支付确认地址", example = "https://www.ynzykj.net")
    @ExcelProperty("his支付确认地址")
    private String hisConfirmUrl;

    @Schema(description = "his退费地址", example = "https://www.ynzykj.net")
    @ExcelProperty("his退费地址")
    private String hisRefundUrl;

    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty(value = "状态", converter = DictConvert.class)
    @DictFormat("common_status") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer status;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}